package com.leps.nq.common.vo;

public class RBuilder {
    // 返回成功
    public static <T> R<T> ok(String msg, T data) {
        return new R<T>(R.CODE_SUCCESS, msg, data);
    }

    public static <T> R<T> ok(T data) {
        return ok("ok", data);
    }

    public static R<?> ok() {
        return ok("ok");
    }

    // 返回失败
    public static R<?> error(int code, String msg) {
        return new R<Object>(code, msg, null);
    }

    public static R<?> error(String msg) {
        return error(R.CODE_ERROR, msg);
    }

    public static R<?> error() {
        return error(R.CODE_ERROR, "error");
    }

    // 返回警告
    public static R<?> warning() {
        return warning("warning");
    }

    public static R<?> warning(String msg) {
        return new R<Object>(R.CODE_WARNING, msg);
    }

    // 返回未登录
    public static R<?> unauthenticated() {
        return new R<Object>(R.CODE_UNAUTHENTICATED, "未登录，请登录后再次访问");
    }

    // 返回没有权限的
    public static R<?> unauthorized() {
        return new R<Object>(R.CODE_UNAUTHORIZED, "无权访问");
    }

    // 返回一个自定义状态码的
    public static R<?> of(int code, String msg) {
        return new R<Object>(code, msg);
    }

    public static <T> R<T> of(int code, String msg, T data) {
        return new R<T>(code, msg, data);
    }

    // 返回，根据受影响行数的(大于0=ok，小于0=error)
    public static R<?> ofAffectedRows(int affectedRows) {
        if (affectedRows > 0) {
            return ok("ok", affectedRows);
        }
        return error();
    }

    // 返回，根据布尔值来确定最终结果的 (true=ok，false=error)
    public static R<?> ofBoolean(boolean b) {
        return b ? ok() : error();
    }
}
